{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# MoutainCar-v0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import sys\n",
    "import logging\n",
    "import itertools\n",
    "\n",
    "import numpy as np\n",
    "np.random.seed(0)\n",
    "import gym\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "logging.basicConfig(level=logging.INFO,\n",
    "        format='%(asctime)s [%(levelname)s] %(message)s',\n",
    "        stream=sys.stdout, datefmt='%H:%M:%S')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Use Environment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "23:39:42 [INFO] observation space = Box(-1.2000000476837158, 0.6000000238418579, (2,), float32)\n",
      "23:39:42 [INFO] action space = Discrete(3)\n",
      "23:39:42 [INFO] range of positions = -1.2 ~ 0.6\n",
      "23:39:42 [INFO] range of speeds = -0.07 ~ 0.07\n",
      "23:39:42 [INFO] goal position = 0.5\n",
      "23:39:42 [INFO] reward threshold = -110.0\n",
      "23:39:42 [INFO] max episode steps = 200\n"
     ]
    }
   ],
   "source": [
    "env = gym.make('MountainCar-v0')\n",
    "env.seed(0)\n",
    "logging.info('observation space = %s', env.observation_space)\n",
    "logging.info('action space = %s', env.action_space)\n",
    "logging.info('range of positions = %s ~ %s', env.unwrapped.min_position,\n",
    "        env.unwrapped.max_position)\n",
    "logging.info('range of speeds = %s ~ %s', -env.unwrapped.max_speed,\n",
    "        env.unwrapped.max_speed)\n",
    "logging.info('goal position = %s', env.unwrapped.goal_position)\n",
    "logging.info('reward threshold = %s', env.spec.reward_threshold)\n",
    "logging.info('max episode steps = %s', env.spec.max_episode_steps)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Stubborn Agent\n",
    "\n",
    "Simply pushing right does not work"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "23:39:42 [INFO] fail\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x23cb6b42670>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "positions, velocities = [], []\n",
    "observation = env.reset()\n",
    "while True:\n",
    "    positions.append(observation[0])\n",
    "    velocities.append(observation[1])\n",
    "    next_observation, reward, done, _ = env.step(2)\n",
    "    if done:\n",
    "        break\n",
    "    observation = next_observation\n",
    "\n",
    "if next_observation[0] > 0.5:\n",
    "    logging.info('succeed')\n",
    "else:\n",
    "    logging.info('fail')\n",
    "\n",
    "# plot positions and velocities\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(positions, label='position')\n",
    "ax.plot(velocities, label='velocity')\n",
    "ax.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### SARSA with Tile Coding"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Tile Coder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "class TileCoder:\n",
    "    def __init__(self, layer_count, feature_count):\n",
    "        self.layer_count = layer_count\n",
    "        self.feature_count = feature_count\n",
    "        self.codebook = {}\n",
    "\n",
    "    def get_feature(self, codeword):\n",
    "        if codeword in self.codebook:\n",
    "            return self.codebook[codeword]\n",
    "        count = len(self.codebook)\n",
    "        if count >= self.feature_count: # resolve conflicts\n",
    "            return hash(codeword) % self.feature_count\n",
    "        self.codebook[codeword] = count\n",
    "        return count\n",
    "\n",
    "    def __call__(self, floats=(), ints=()):\n",
    "        dim = len(floats)\n",
    "        scaled_floats = tuple(f * (self.layer_count ** 2) for f in floats)\n",
    "        features = []\n",
    "        for layer in range(self.layer_count):\n",
    "            codeword = (layer,) + tuple(\n",
    "                    int((f + (1 + dim * i) * layer) / self.layer_count)\n",
    "                    for i, f in enumerate(scaled_floats)) + ints\n",
    "            feature = self.get_feature(codeword)\n",
    "            features.append(feature)\n",
    "        return features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "SARSA with Linear Approximation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "class SARSAAgent:\n",
    "    def __init__(self, env):\n",
    "        self.action_n = env.action_space.n\n",
    "        self.obs_low = env.observation_space.low\n",
    "        self.obs_scale = env.observation_space.high - \\\n",
    "                env.observation_space.low\n",
    "        self.encoder = TileCoder(8, 1896)\n",
    "        self.w = np.zeros(self.encoder.feature_count)\n",
    "        self.gamma = 1.\n",
    "        self.learning_rate = 0.03\n",
    "\n",
    "    def encode(self, observation, action):\n",
    "        states = tuple((observation - self.obs_low) / self.obs_scale)\n",
    "        actions = (action,)\n",
    "        return self.encoder(states, actions)\n",
    "\n",
    "    def get_q(self, observation, action): # action value\n",
    "        features = self.encode(observation, action)\n",
    "        return self.w[features].sum()\n",
    "\n",
    "    def reset(self, mode=None):\n",
    "        self.mode = mode\n",
    "        if self.mode == 'train':\n",
    "            self.trajectory = []\n",
    "\n",
    "    def step(self, observation, reward, done):\n",
    "        if self.mode == 'train' and np.random.rand() < 0.001:\n",
    "            action = np.random.randint(self.action_n)\n",
    "        else:\n",
    "            qs = [self.get_q(observation, action) for action in\n",
    "                    range(self.action_n)]\n",
    "            action = np.argmax(qs)\n",
    "        if self.mode == 'train':\n",
    "            self.trajectory += [observation, reward, done, action]\n",
    "            if len(self.trajectory) >= 8:\n",
    "                self.learn()\n",
    "        return action\n",
    "\n",
    "    def close(self):\n",
    "        pass\n",
    "\n",
    "    def learn(self):\n",
    "        observation, _, _, action, next_observation, reward, done, \\\n",
    "                next_action = self.trajectory[-8:]\n",
    "        target = reward + (1. - done) * self.gamma * \\\n",
    "                self.get_q(next_observation, next_action)\n",
    "        td_error = target - self.get_q(observation, action)\n",
    "        features = self.encode(observation, action)\n",
    "        self.w[features] += (self.learning_rate * td_error)\n",
    "\n",
    "\n",
    "agent = SARSAAgent(env)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Train & test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "23:39:42 [INFO] ==== train ====\n",
      "23:41:36 [INFO] ==== test ====\n",
      "23:41:39 [INFO] average episode reward = -104.65 ± 12.67\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def play_episode(env, agent, max_episode_steps=None, mode=None, render=False):\n",
    "    observation, reward, done = env.reset(), 0., False\n",
    "    agent.reset(mode=mode)\n",
    "    episode_reward, elapsed_steps = 0., 0\n",
    "    while True:\n",
    "        action = agent.step(observation, reward, done)\n",
    "        if render:\n",
    "            env.render()\n",
    "        if done:\n",
    "            break\n",
    "        observation, reward, done, _ = env.step(action)\n",
    "        episode_reward += reward\n",
    "        elapsed_steps += 1\n",
    "        if max_episode_steps and elapsed_steps >= max_episode_steps:\n",
    "            break\n",
    "    agent.close()\n",
    "    return episode_reward, elapsed_steps\n",
    "\n",
    "\n",
    "logging.info('==== train ====')\n",
    "episode_rewards = []\n",
    "for episode in itertools.count():\n",
    "    episode_reward, elapsed_steps = play_episode(env.unwrapped, agent,\n",
    "            max_episode_steps=env._max_episode_steps, mode='train')\n",
    "    episode_rewards.append(episode_reward)\n",
    "    logging.debug('train episode %d: reward = %.2f, steps = %d',\n",
    "            episode, episode_reward, elapsed_steps)\n",
    "    if np.mean(episode_rewards[-100:]) > -110:\n",
    "        break\n",
    "plt.plot(episode_rewards)\n",
    "\n",
    "\n",
    "logging.info('==== test ====')\n",
    "episode_rewards = []\n",
    "for episode in range(100):\n",
    "    episode_reward, elapsed_steps = play_episode(env, agent)\n",
    "    episode_rewards.append(episode_reward)\n",
    "    logging.debug('test episode %d: reward = %.2f, steps = %d',\n",
    "            episode, episode_reward, elapsed_steps)\n",
    "logging.info('average episode reward = %.2f ± %.2f',\n",
    "        np.mean(episode_rewards), np.std(episode_rewards))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Visualize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "poses = np.linspace(env.unwrapped.min_position,\n",
    "          env.unwrapped.max_position, 128)\n",
    "vels = np.linspace(-env.unwrapped.max_speed, env.unwrapped.max_speed, 128)\n",
    "positions, velocities = np.meshgrid(poses, vels)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot action value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "@np.vectorize\n",
    "def get_q(position, velocity, action):\n",
    "    return agent.get_q((position, velocity), action)\n",
    "\n",
    "q_values = np.empty((len(poses), len(vels), 3))\n",
    "for action in range(3):\n",
    "    q_values[:, :, action] = get_q(positions, velocities, action)\n",
    "\n",
    "\n",
    "fig, axes = plt.subplots(1, 3, figsize=(15, 4))\n",
    "for action, ax in enumerate(axes):\n",
    "    c = ax.pcolormesh(positions, velocities, q_values[:, :, action], shading='auto')\n",
    "    ax.set_xlabel('position')\n",
    "    ax.set_ylabel('velocity')\n",
    "    fig.colorbar(c, ax=ax)\n",
    "    ax.set_title('action = {}'.format(action))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot state value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "v_values = q_values.max(axis=-1)\n",
    "\n",
    "fig, ax = plt.subplots(1, 1)\n",
    "c = ax.pcolormesh(positions, velocities, v_values, shading='auto')\n",
    "ax.set_xlabel('position')\n",
    "ax.set_ylabel('velocity')\n",
    "fig.colorbar(c, ax=ax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot policy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "@np.vectorize\n",
    "def decide(position, velocity):\n",
    "    return agent.step((position, velocity), _, _)\n",
    "\n",
    "q_values = np.empty((len(poses), len(vels), 3))\n",
    "action_values = decide(positions, velocities)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "c = ax.pcolormesh(positions, velocities, action_values, shading='auto')\n",
    "ax.set_xlabel('position')\n",
    "ax.set_ylabel('velocity')\n",
    "fig.colorbar(c, ax=ax, boundaries=[-.5, .5, 1.5, 2.5], ticks=[0, 1, 2]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "env.close()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
